#ifndef ENVIRONMENTSETTINGSDLG_H
#define ENVIRONMENTSETTINGSDLG_H

#include <scrollingdialog.h>
#include <pluginmanager.h>

class wxAuiDockArt;
class wxListbookEvent;
class wxCheckListBox;

class EnvironmentSettingsDlg : public wxScrollingDialog {
  public:
    EnvironmentSettingsDlg( wxWindow* parent, wxAuiDockArt* art );
    virtual ~EnvironmentSettingsDlg();
    virtual void EndModal( int retCode );
  protected:
    void OnPageChanging( wxListbookEvent& event );
    void OnPageChanged( wxListbookEvent& event );
    void OnChooseColour( wxCommandEvent& event );
    void OnResetDefaultColours( wxCommandEvent& event );
    void OnAutoHide( wxCommandEvent& event );
    void OnSettingsIconsSize( wxCommandEvent& event );
    void OnDblClickMaximizes( wxCommandEvent& event );
    void OnMousewheelModifier( wxKeyEvent& event );
    void OnUseTabMousewheel( wxCommandEvent& event );
    void OnChooseAppColourCategory( wxCommandEvent &event );
    void OnChooseAppColourItem( wxCommandEvent &event );
    void OnClickAppColour( wxCommandEvent &event );
  private:
    void AddPluginPanels();
    void LoadListbookImages();
    void UpdateListbookImages();
    void FillApplicationColours();
    void WriteApplicationColours();
    wxString AnnoyingDlgReturnToString( const wxString& caption );
    wxString StringToAnnoyingDlgReturn( const wxString& caption );
  private:
    wxAuiDockArt* m_pArt;
    bool xml_File_lock;
    ConfigurationPanelsArray m_PluginPanels;
    std::map<wxString, wxColour> m_ChangedAppColours;
    std::map<wxString, wxString> m_AnnoyingDlgReturnMap;
    wxImageList* m_pImageList;
    DECLARE_EVENT_TABLE()
};

#endif
